package main

import "fmt"

func main() {
	/*	//定义并初始化泛型
		var s1 MySlice[float64] = []float64{1.2, 2.5, 3.6, 4.65}
		fmt.Println(s1.sum())
		//定义并初始化泛型
		s := MySlice[int]{1, 2, 4, 5}
		fmt.Println(s.sum())*/

	//确定的类型
	fmt.Println(Add[float64](1.2, 3.4))
	fmt.Println(Add[int](1, 3))
	fmt.Println(Add[string]("xiaogei", "xiaosh"))

	//系统识别的类型
	fmt.Println(Add(1, 2))
	fmt.Println(Add(1.32, 2.34))
}

// Add 创建一个泛型函数
func Add[T int | string | float64](a T, b T) T {
	return a + b
}

type MySlice[T int | float64] []T

// 创建一个类型是泛型的方法  用于求和
func (s MySlice[T]) sum() T {
	var sum T
	for _, v := range s {
		sum += v
	}
	return sum
}
